package com.freepbx.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

import javax.swing.plaf.FileChooserUI;

import org.apache.commons.io.FileUtils;

/**
 * @author litong
 * @date 2018年7月19日_下午2:37:09 
 * @version 1.0
 * 过滤录音文件 
 */
public class FilterTape {
	/**
	 * 显示指定文件下,文件大于size大小,并且文件名符合正则表达式的文件
	 * @param path
	 * @param regex
	 * @param size,单位byte,2097152byte=2M
	 */
	public static List<String> filterWithRegex(String path, String regex, int size) {
		List<String> retval = new ArrayList<>();
		File pathFile = new File(path);
		File[] wavFile = pathFile.listFiles();
		for (File wav : wavFile) {
			// 文件大于指定大小
			if (wav.length() > size) {
				// 配置正则表达式
				if (wav.getName().matches(regex)) {
					retval.add(wav.getAbsolutePath());
				}
			}
		}
		return retval;
	}

	/**
	 * 指定目录下指定工号的录音
	 * @param path
	 * @param extension
	 */
	public static List<String> filter(String path, int extension, int size) {
		// 根据分机号生产正则表达式
		String regex = ".*-" + extension + "-.*wav$";
		return filterWithRegex(path, regex, size);
	}

	/*
	 * 指定目录下,指定工号,将工号放到文件中
	 * 
	 * @return 所有工号的列表
	 */
	public static List<String> filter(String path, String extensionFile, int size) throws IOException {
		List<String> retval = new ArrayList<>();
		File file = new File(extensionFile);
		FileReader fileReader = new FileReader(file);
		@SuppressWarnings("resource")
		BufferedReader bufReader = new BufferedReader(fileReader);
		String line = null;
		while ((line = bufReader.readLine()) != null) {
			List<String> filter = filter(path, Integer.valueOf(line), size);
			retval.addAll(filter);
		}
		return retval;
	}

	/**
	 * 将大于指定大小,指定工号的文件复制到指定的目录下
	 * @param path
	 * @param extensionFile
	 * @param size
	 * @param foler
	 * @throws IOException 
	 */
	public static void copyTo(String path, String extensionFile, int size, String foler) throws IOException {
		List<String> fileList = filter(path, extensionFile, size);
		for (String src : fileList) {
			copyToFolder(src, foler);
		}
	}

	/**
	 * 复制文件到文件下,文件名不变
	 * @param src 文件 eg c:\124\124.wav
	 * @param foler 文件夹
	 * @throws IOException 
	 */
	private static void copyToFolder(String src, String folder) throws IOException {
		// 如果目标文件夹不存在,创建目标文件夹
		File file = new File(folder);
		if (!file.exists()) {
			file.mkdirs();
		}

		int lastIndexOf = src.lastIndexOf(File.separator);
		String fileName = src.substring(lastIndexOf + 1);
		String dst = folder + File.separator + fileName;
		FileUtils.copyFile(new File(src), new File(dst));
		System.out.println("copy " + src + " to " + dst);
	}
}